<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// 3、改变promise状态和指定回调函数谁先谁后?
	// (1) 都有可能, 正常情况下是先指定回调再改变状态, 但也可以先改状态再指定回调
	{
		// 正常情况下:执行器函数需要处理异步行为的
		// const p1 = new Promise(function(resolve,reject){
		// 	setTimeout(function(){
		// 		resolve(100)
		// 	},1000)
		// });
		// p1.then(value=>{
		// 	console.log(value);
		// },reason=>{
		// 	console.log(reason);
		// })
	}
	// (2) 如何先改状态再指定回调?
	// 	① 在执行器中直接调用resolve()/reject()
	{
		// const p = new Promise(resolve=>{
		// 	resolve(100);
		// });
		// p.then(value=>{
		// 	console.log(value);
		// })
	}
	// 	② 延迟更长时间才调用then()
	{
		// const p1 = new Promise(function(resolve,reject){
		// 	setTimeout(function(){
		// 		resolve(100)
		// 	},1000)
		// });
		// setTimeout(()=>{
		// 	p1.then(value=>{
		// 		console.log(value);
		// 	},reason=>{
		// 		console.log(reason);
		// 	})
		// },2000)
		
	}
	// (3) 什么时候才能得到数据?
	// 	① 如果先指定的回调, 那当状态发生改变时, 回调函数就会调用(异步的）, 得到数据
	{
		// const p1 = new Promise(function(resolve,reject){
		// 	setTimeout(function(){
		// 		resolve(100);
		// 		console.log(1)
		// 	},1000)
		// });
		// p1.then(value=>{
		// 	console.log(value);
		// },reason=>{
		// 	console.log(reason);
		// })
	}
	
	
	// 	② 如果先改变的状态, 那当指定回调时, 回调函数就会调用(异步）, 得到数据
	{
		const p1 = new Promise(function(resolve,reject){
			resolve(100);
			console.log(2);
		});
		p1.then(value=>{
			console.log(value);
		},reason=>{
			console.log(reason);
		})
	}
</script>
</html>